<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/Python-3.6.2/Include/longobject.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/Python-3.6.2/Include/longobject.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="macros_noref.html#_UHlfTE9OR09CSkVDVF9IXzA_"><span class="b">Py_LONGOBJECT_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlfTE9OR09CSkVDVF9IXzA_"><span class="b">Py_LONGOBJECT_H</span></a>
<a name="3" /><span class="False">       3:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">__cplusplus</span>
<a name="4" /><span class="False">       4:</span> <span class="m">extern</span> <span class="e">&quot;C&quot;</span> <span class="f">{</span>
<a name="5" /><span class="True">       5:</span> <span class="f">#</span><span class="n">endif</span>
<a name="6" /><span class="True">       6:</span> 
<a name="7" /><span class="True">       7:</span> 
<a name="8" /><span class="True">       8:</span> <span class="k">/* Long (arbitrary precision) integer object interface */</span>
<a name="9" /><span class="True">       9:</span> 
<a name="10" /><span class="True">      10:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="b">_longobject</span> <span class="b">PyLongObject</span><span class="f">;</span> <span class="k">/* Revealed in longintrepr.h */</span>
<a name="11" /><span class="True">      11:</span> 
<a name="12" /><span class="True">      12:</span> <a href="macros_ref.html#_UHlBUElfREFUQV8w"><span class="b">PyAPI_DATA</span></a><span class="f">(</span><span class="b">PyTypeObject</span><span class="f">)</span> <span class="b">PyLong_Type</span><span class="f">;</span>
<a name="13" /><span class="True">      13:</span> 
<a name="14" /><span class="True">      14:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlMb25nX0NoZWNrXzA_"><span class="b">PyLong_Check</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> \
<a name="15" /><span class="True">      15:</span>         <a href="macros_ref.html#_UHlUeXBlX0Zhc3RTdWJjbGFzc18w"><span class="b">PyType_FastSubclass</span></a><span class="f">(</span><a href="macros_ref.html#_UHlfVFlQRV8w"><span class="b">Py_TYPE</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span><span class="f">,</span> <a href="macros_noref.html#_UHlfVFBGTEFHU19MT05HX1NVQkNMQVNTXzA_"><span class="b">Py_TPFLAGS_LONG_SUBCLASS</span></a><span class="f">)</span>
<a name="16" /><span class="True">      16:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlMb25nX0NoZWNrRXhhY3RfMA__"><span class="b">PyLong_CheckExact</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <span class="f">(</span><a href="macros_ref.html#_UHlfVFlQRV8w"><span class="b">Py_TYPE</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">PyLong_Type</span><span class="f">)</span>
<a name="17" /><span class="True">      17:</span> 
<a name="18" /><span class="True">      18:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_FromLong</span><span class="f">(</span><span class="m">long</span><span class="f">)</span><span class="f">;</span>
<a name="19" /><span class="True">      19:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_FromUnsignedLong</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">;</span>
<a name="20" /><span class="True">      20:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_FromSize_t</span><span class="f">(</span><span class="b">size_t</span><span class="f">)</span><span class="f">;</span>
<a name="21" /><span class="True">      21:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_FromSsize_t</span><span class="f">(</span><span class="b">Py_ssize_t</span><span class="f">)</span><span class="f">;</span>
<a name="22" /><span class="True">      22:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_FromDouble</span><span class="f">(</span><span class="m">double</span><span class="f">)</span><span class="f">;</span>
<a name="23" /><span class="True">      23:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">long</span><span class="f">)</span> <span class="b">PyLong_AsLong</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="24" /><span class="True">      24:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">long</span><span class="f">)</span> <span class="b">PyLong_AsLongAndOverflow</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="m">int</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="25" /><span class="True">      25:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">Py_ssize_t</span><span class="f">)</span> <span class="b">PyLong_AsSsize_t</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="26" /><span class="True">      26:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">size_t</span><span class="f">)</span> <span class="b">PyLong_AsSize_t</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="27" /><span class="True">      27:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span> <span class="b">PyLong_AsUnsignedLong</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="28" /><span class="True">      28:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span> <span class="b">PyLong_AsUnsignedLongMask</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="29" /><span class="True">      29:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="30" /><span class="True">      30:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyLong_AsInt</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="31" /><span class="True">      31:</span> <span class="f">#</span><span class="n">endif</span>
<a name="32" /><span class="True">      32:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_GetInfo</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="33" /><span class="True">      33:</span> 
<a name="34" /><span class="True">      34:</span> <span class="k">/* It may be useful in the future. I&apos;ve added it in the PyInt -&gt; PyLong</span>
<a name="35" /><span class="True">      35:</span> <span class="k">   cleanup to keep the extra information. [CH] */</span>
<a name="36" /><span class="True">      36:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlMb25nX0FTX0xPTkdfMA__"><span class="b">PyLong_AS_LONG</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <span class="b">PyLong_AsLong</span><span class="f">(</span><span class="b">op</span><span class="f">)</span>
<a name="37" /><span class="True">      37:</span> 
<a name="38" /><span class="True">      38:</span> <span class="k">/* Issue #1983: pid_t can be longer than a C long on some systems */</span>
<a name="39" /><span class="True">      39:</span> <span class="f">#</span><span class="n">if</span> <span class="f">!</span><span class="b">defined</span><span class="f">(</span><a href="macros_ref.html#_U0laRU9GX1BJRF9UXzA_"><span class="b">SIZEOF_PID_T</span></a><span class="f">)</span> <span class="f">||</span> <a href="macros_ref.html#_U0laRU9GX1BJRF9UXzA_"><span class="b">SIZEOF_PID_T</span></a> <span class="f">==</span> <a href="macros_ref.html#_U0laRU9GX0lOVF8w"><span class="b">SIZEOF_INT</span></a>
<a name="40" /><span class="True">      40:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_X1B5X1BBUlNFX1BJRF8w"><span class="b">_Py_PARSE_PID</span></a> <span class="e">&quot;i&quot;</span>
<a name="41" /><span class="True">      41:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlMb25nX0Zyb21QaWRfMA__"><span class="b">PyLong_FromPid</span></a> <span class="b">PyLong_FromLong</span>
<a name="42" /><span class="True">      42:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlMb25nX0FzUGlkXzA_"><span class="b">PyLong_AsPid</span></a> <span class="b">PyLong_AsLong</span>
<a name="43" /><span class="False">      43:</span> <span class="f">#</span><span class="n">elif</span> <a href="macros_ref.html#_U0laRU9GX1BJRF9UXzA_"><span class="b">SIZEOF_PID_T</span></a> <span class="f">==</span> <a href="macros_ref.html#_U0laRU9GX0xPTkdfMA__"><span class="b">SIZEOF_LONG</span></a>
<a name="44" /><span class="False">      44:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_X1B5X1BBUlNFX1BJRF8w"><span class="b">_Py_PARSE_PID</span></a> <span class="e">&quot;l&quot;</span>
<a name="45" /><span class="False">      45:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlMb25nX0Zyb21QaWRfMA__"><span class="b">PyLong_FromPid</span></a> <span class="b">PyLong_FromLong</span>
<a name="46" /><span class="False">      46:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlMb25nX0FzUGlkXzA_"><span class="b">PyLong_AsPid</span></a> <span class="b">PyLong_AsLong</span>
<a name="47" /><span class="False">      47:</span> <span class="f">#</span><span class="n">elif</span> <span class="b">defined</span><span class="f">(</span><a href="macros_noref.html#_U0laRU9GX0xPTkdfTE9OR18w"><span class="b">SIZEOF_LONG_LONG</span></a><span class="f">)</span> <span class="f">&amp;&amp;</span> <a href="macros_ref.html#_U0laRU9GX1BJRF9UXzA_"><span class="b">SIZEOF_PID_T</span></a> <span class="f">==</span> <a href="macros_noref.html#_U0laRU9GX0xPTkdfTE9OR18w"><span class="b">SIZEOF_LONG_LONG</span></a>
<a name="48" /><span class="False">      48:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_X1B5X1BBUlNFX1BJRF8w"><span class="b">_Py_PARSE_PID</span></a> <span class="e">&quot;L&quot;</span>
<a name="49" /><span class="False">      49:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlMb25nX0Zyb21QaWRfMA__"><span class="b">PyLong_FromPid</span></a> <span class="b">PyLong_FromLongLong</span>
<a name="50" /><span class="False">      50:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlMb25nX0FzUGlkXzA_"><span class="b">PyLong_AsPid</span></a> <span class="b">PyLong_AsLongLong</span>
<a name="51" /><span class="False">      51:</span> <span class="f">#</span><span class="n">else</span>
<a name="52" /><span class="False">      52:</span> <span class="f">#</span><span class="n">error</span> <span class="e">&quot;sizeof(pid_t) is neither sizeof(int), sizeof(long) or sizeof(long long)&quot;</span>
<a name="53" /><span class="True">      53:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* SIZEOF_PID_T */</span>
<a name="54" /><span class="True">      54:</span> 
<a name="55" /><span class="False">      55:</span> <span class="f">#</span><span class="n">if</span> <a href="macros_ref.html#_U0laRU9GX1ZPSURfUF8w"><span class="b">SIZEOF_VOID_P</span></a> <span class="f">==</span> <a href="macros_ref.html#_U0laRU9GX0lOVF8w"><span class="b">SIZEOF_INT</span></a>
<a name="56" /><span class="False">      56:</span> <span class="f">#</span>  <span class="n">define</span> <a href="macros_noref.html#_X1B5X1BBUlNFX0lOVFBUUl8w"><span class="b">_Py_PARSE_INTPTR</span></a> <span class="e">&quot;i&quot;</span>
<a name="57" /><span class="False">      57:</span> <span class="f">#</span>  <span class="n">define</span> <a href="macros_noref.html#_X1B5X1BBUlNFX1VJTlRQVFJfMA__"><span class="b">_Py_PARSE_UINTPTR</span></a> <span class="e">&quot;I&quot;</span>
<a name="58" /><span class="True">      58:</span> <span class="f">#</span><span class="n">elif</span> <a href="macros_ref.html#_U0laRU9GX1ZPSURfUF8w"><span class="b">SIZEOF_VOID_P</span></a> <span class="f">==</span> <a href="macros_ref.html#_U0laRU9GX0xPTkdfMA__"><span class="b">SIZEOF_LONG</span></a>
<a name="59" /><span class="True">      59:</span> <span class="f">#</span>  <span class="n">define</span> <a href="macros_noref.html#_X1B5X1BBUlNFX0lOVFBUUl8w"><span class="b">_Py_PARSE_INTPTR</span></a> <span class="e">&quot;l&quot;</span>
<a name="60" /><span class="True">      60:</span> <span class="f">#</span>  <span class="n">define</span> <a href="macros_noref.html#_X1B5X1BBUlNFX1VJTlRQVFJfMA__"><span class="b">_Py_PARSE_UINTPTR</span></a> <span class="e">&quot;k&quot;</span>
<a name="61" /><span class="False">      61:</span> <span class="f">#</span><span class="n">elif</span> <span class="b">defined</span><span class="f">(</span><a href="macros_noref.html#_U0laRU9GX0xPTkdfTE9OR18w"><span class="b">SIZEOF_LONG_LONG</span></a><span class="f">)</span> <span class="f">&amp;&amp;</span> <a href="macros_ref.html#_U0laRU9GX1ZPSURfUF8w"><span class="b">SIZEOF_VOID_P</span></a> <span class="f">==</span> <a href="macros_noref.html#_U0laRU9GX0xPTkdfTE9OR18w"><span class="b">SIZEOF_LONG_LONG</span></a>
<a name="62" /><span class="False">      62:</span> <span class="f">#</span>  <span class="n">define</span> <a href="macros_noref.html#_X1B5X1BBUlNFX0lOVFBUUl8w"><span class="b">_Py_PARSE_INTPTR</span></a> <span class="e">&quot;L&quot;</span>
<a name="63" /><span class="False">      63:</span> <span class="f">#</span>  <span class="n">define</span> <a href="macros_noref.html#_X1B5X1BBUlNFX1VJTlRQVFJfMA__"><span class="b">_Py_PARSE_UINTPTR</span></a> <span class="e">&quot;K&quot;</span>
<a name="64" /><span class="False">      64:</span> <span class="f">#</span><span class="n">else</span>
<a name="65" /><span class="False">      65:</span> <span class="f">#</span>  <span class="n">error</span> <span class="e">&quot;void* different in size from int, long and long long&quot;</span>
<a name="66" /><span class="True">      66:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* SIZEOF_VOID_P */</span>
<a name="67" /><span class="True">      67:</span> 
<a name="68" /><span class="True">      68:</span> <span class="k">/* Used by Python/mystrtoul.c, _PyBytes_FromHex(),</span>
<a name="69" /><span class="True">      69:</span> <span class="k">   _PyBytes_DecodeEscapeRecode(), etc. */</span>
<a name="70" /><span class="True">      70:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="71" /><span class="True">      71:</span> <a href="macros_ref.html#_UHlBUElfREFUQV8w"><span class="b">PyAPI_DATA</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">char</span><span class="f">)</span> <span class="b">_PyLong_DigitValue</span><span class="f">[</span><span class="c">256</span><span class="f">]</span><span class="f">;</span>
<a name="72" /><span class="True">      72:</span> <span class="f">#</span><span class="n">endif</span>
<a name="73" /><span class="True">      73:</span> 
<a name="74" /><span class="True">      74:</span> <span class="k">/* _PyLong_Frexp returns a double x and an exponent e such that the</span>
<a name="75" /><span class="True">      75:</span> <span class="k">   true value is approximately equal to x * 2**e.  e is &gt;= 0.  x is</span>
<a name="76" /><span class="True">      76:</span> <span class="k">   0.0 if and only if the input is 0 (in which case, e and x are both</span>
<a name="77" /><span class="True">      77:</span> <span class="k">   zeroes); otherwise, 0.5 &lt;= abs(x) &lt; 1.0.  On overflow, which is</span>
<a name="78" /><span class="True">      78:</span> <span class="k">   possible if the number of bits doesn&apos;t fit into a Py_ssize_t, sets</span>
<a name="79" /><span class="True">      79:</span> <span class="k">   OverflowError and returns -1.0 for x, 0 for e. */</span>
<a name="80" /><span class="True">      80:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="81" /><span class="True">      81:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">double</span><span class="f">)</span> <span class="b">_PyLong_Frexp</span><span class="f">(</span><span class="b">PyLongObject</span> <span class="f">*</span><span class="b">a</span><span class="f">,</span> <span class="b">Py_ssize_t</span> <span class="f">*</span><span class="b">e</span><span class="f">)</span><span class="f">;</span>
<a name="82" /><span class="True">      82:</span> <span class="f">#</span><span class="n">endif</span>
<a name="83" /><span class="True">      83:</span> 
<a name="84" /><span class="True">      84:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">double</span><span class="f">)</span> <span class="b">PyLong_AsDouble</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="85" /><span class="True">      85:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_FromVoidPtr</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="86" /><span class="True">      86:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_AsVoidPtr</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="87" /><span class="True">      87:</span> 
<a name="88" /><span class="True">      88:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_FromLongLong</span><span class="f">(</span><span class="m">long</span> <span class="m">long</span><span class="f">)</span><span class="f">;</span>
<a name="89" /><span class="True">      89:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_FromUnsignedLongLong</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span><span class="f">)</span><span class="f">;</span>
<a name="90" /><span class="True">      90:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">long</span> <span class="m">long</span><span class="f">)</span> <span class="b">PyLong_AsLongLong</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="91" /><span class="True">      91:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span><span class="f">)</span> <span class="b">PyLong_AsUnsignedLongLong</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="92" /><span class="True">      92:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span><span class="f">)</span> <span class="b">PyLong_AsUnsignedLongLongMask</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="93" /><span class="True">      93:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">long</span> <span class="m">long</span><span class="f">)</span> <span class="b">PyLong_AsLongLongAndOverflow</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="m">int</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="94" /><span class="True">      94:</span> 
<a name="95" /><span class="True">      95:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_FromString</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span> <span class="m">char</span> <span class="f">*</span><span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="96" /><span class="True">      96:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="97" /><span class="True">      97:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_FromUnicode</span><span class="f">(</span><span class="b">Py_UNICODE</span><span class="f">*</span><span class="f">,</span> <span class="b">Py_ssize_t</span><span class="f">,</span> <span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="98" /><span class="True">      98:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyLong_FromUnicodeObject</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">u</span><span class="f">,</span> <span class="m">int</span> <span class="b">base</span><span class="f">)</span><span class="f">;</span>
<a name="99" /><span class="True">      99:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">_PyLong_FromBytes</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span> <span class="b">Py_ssize_t</span><span class="f">,</span> <span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="100" /><span class="True">     100:</span> <span class="f">#</span><span class="n">endif</span>
<a name="101" /><span class="True">     101:</span> 
<a name="102" /><span class="True">     102:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="103" /><span class="True">     103:</span> <span class="k">/* _PyLong_Sign.  Return 0 if v is 0, -1 if v &lt; 0, +1 if v &gt; 0.</span>
<a name="104" /><span class="True">     104:</span> <span class="k">   v must not be NULL, and must be a normalized long.</span>
<a name="105" /><span class="True">     105:</span> <span class="k">   There are no error cases.</span>
<a name="106" /><span class="True">     106:</span> <span class="k">*/</span>
<a name="107" /><span class="True">     107:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyLong_Sign</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="108" /><span class="True">     108:</span> 
<a name="109" /><span class="True">     109:</span> 
<a name="110" /><span class="True">     110:</span> <span class="k">/* _PyLong_NumBits.  Return the number of bits needed to represent the</span>
<a name="111" /><span class="True">     111:</span> <span class="k">   absolute value of a long.  For example, this returns 1 for 1 and -1, 2</span>
<a name="112" /><span class="True">     112:</span> <span class="k">   for 2 and -2, and 2 for 3 and -3.  It returns 0 for 0.</span>
<a name="113" /><span class="True">     113:</span> <span class="k">   v must not be NULL, and must be a normalized long.</span>
<a name="114" /><span class="True">     114:</span> <span class="k">   (size_t)-1 is returned and OverflowError set if the true result doesn&apos;t</span>
<a name="115" /><span class="True">     115:</span> <span class="k">   fit in a size_t.</span>
<a name="116" /><span class="True">     116:</span> <span class="k">*/</span>
<a name="117" /><span class="True">     117:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">size_t</span><span class="f">)</span> <span class="b">_PyLong_NumBits</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="118" /><span class="True">     118:</span> 
<a name="119" /><span class="True">     119:</span> <span class="k">/* _PyLong_DivmodNear.  Given integers a and b, compute the nearest</span>
<a name="120" /><span class="True">     120:</span> <span class="k">   integer q to the exact quotient a / b, rounding to the nearest even integer</span>
<a name="121" /><span class="True">     121:</span> <span class="k">   in the case of a tie.  Return (q, r), where r = a - q*b.  The remainder r</span>
<a name="122" /><span class="True">     122:</span> <span class="k">   will satisfy abs(r) &lt;= abs(b)/2, with equality possible only if q is</span>
<a name="123" /><span class="True">     123:</span> <span class="k">   even.</span>
<a name="124" /><span class="True">     124:</span> <span class="k">*/</span>
<a name="125" /><span class="True">     125:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">_PyLong_DivmodNear</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="126" /><span class="True">     126:</span> 
<a name="127" /><span class="True">     127:</span> <span class="k">/* _PyLong_FromByteArray:  View the n unsigned bytes as a binary integer in</span>
<a name="128" /><span class="True">     128:</span> <span class="k">   base 256, and return a Python int with the same numeric value.</span>
<a name="129" /><span class="True">     129:</span> <span class="k">   If n is 0, the integer is 0.  Else:</span>
<a name="130" /><span class="True">     130:</span> <span class="k">   If little_endian is 1/true, bytes[n-1] is the MSB and bytes[0] the LSB;</span>
<a name="131" /><span class="True">     131:</span> <span class="k">   else (little_endian is 0/false) bytes[0] is the MSB and bytes[n-1] the</span>
<a name="132" /><span class="True">     132:</span> <span class="k">   LSB.</span>
<a name="133" /><span class="True">     133:</span> <span class="k">   If is_signed is 0/false, view the bytes as a non-negative integer.</span>
<a name="134" /><span class="True">     134:</span> <span class="k">   If is_signed is 1/true, view the bytes as a 2&apos;s-complement integer,</span>
<a name="135" /><span class="True">     135:</span> <span class="k">   non-negative if bit 0x80 of the MSB is clear, negative if set.</span>
<a name="136" /><span class="True">     136:</span> <span class="k">   Error returns:</span>
<a name="137" /><span class="True">     137:</span> <span class="k">   + Return NULL with the appropriate exception set if there&apos;s not</span>
<a name="138" /><span class="True">     138:</span> <span class="k">     enough memory to create the Python int.</span>
<a name="139" /><span class="True">     139:</span> <span class="k">*/</span>
<a name="140" /><span class="True">     140:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">_PyLong_FromByteArray</span><span class="f">(</span>
<a name="141" /><span class="True">     141:</span>     <span class="m">const</span> <span class="m">unsigned</span> <span class="m">char</span><span class="f">*</span> <span class="b">bytes</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">n</span><span class="f">,</span>
<a name="142" /><span class="True">     142:</span>     <span class="m">int</span> <span class="b">little_endian</span><span class="f">,</span> <span class="m">int</span> <span class="b">is_signed</span><span class="f">)</span><span class="f">;</span>
<a name="143" /><span class="True">     143:</span> 
<a name="144" /><span class="True">     144:</span> <span class="k">/* _PyLong_AsByteArray: Convert the least-significant 8*n bits of long</span>
<a name="145" /><span class="True">     145:</span> <span class="k">   v to a base-256 integer, stored in array bytes.  Normally return 0,</span>
<a name="146" /><span class="True">     146:</span> <span class="k">   return -1 on error.</span>
<a name="147" /><span class="True">     147:</span> <span class="k">   If little_endian is 1/true, store the MSB at bytes[n-1] and the LSB at</span>
<a name="148" /><span class="True">     148:</span> <span class="k">   bytes[0]; else (little_endian is 0/false) store the MSB at bytes[0] and</span>
<a name="149" /><span class="True">     149:</span> <span class="k">   the LSB at bytes[n-1].</span>
<a name="150" /><span class="True">     150:</span> <span class="k">   If is_signed is 0/false, it&apos;s an error if v &lt; 0; else (v &gt;= 0) n bytes</span>
<a name="151" /><span class="True">     151:</span> <span class="k">   are filled and there&apos;s nothing special about bit 0x80 of the MSB.</span>
<a name="152" /><span class="True">     152:</span> <span class="k">   If is_signed is 1/true, bytes is filled with the 2&apos;s-complement</span>
<a name="153" /><span class="True">     153:</span> <span class="k">   representation of v&apos;s value.  Bit 0x80 of the MSB is the sign bit.</span>
<a name="154" /><span class="True">     154:</span> <span class="k">   Error returns (-1):</span>
<a name="155" /><span class="True">     155:</span> <span class="k">   + is_signed is 0 and v &lt; 0.  TypeError is set in this case, and bytes</span>
<a name="156" /><span class="True">     156:</span> <span class="k">     isn&apos;t altered.</span>
<a name="157" /><span class="True">     157:</span> <span class="k">   + n isn&apos;t big enough to hold the full mathematical value of v.  For</span>
<a name="158" /><span class="True">     158:</span> <span class="k">     example, if is_signed is 0 and there are more digits in the v than</span>
<a name="159" /><span class="True">     159:</span> <span class="k">     fit in n; or if is_signed is 1, v &lt; 0, and n is just 1 bit shy of</span>
<a name="160" /><span class="True">     160:</span> <span class="k">     being large enough to hold a sign bit.  OverflowError is set in this</span>
<a name="161" /><span class="True">     161:</span> <span class="k">     case, but bytes holds the least-significant n bytes of the true value.</span>
<a name="162" /><span class="True">     162:</span> <span class="k">*/</span>
<a name="163" /><span class="True">     163:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyLong_AsByteArray</span><span class="f">(</span><span class="b">PyLongObject</span><span class="f">*</span> <span class="b">v</span><span class="f">,</span>
<a name="164" /><span class="True">     164:</span>     <span class="m">unsigned</span> <span class="m">char</span><span class="f">*</span> <span class="b">bytes</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">n</span><span class="f">,</span>
<a name="165" /><span class="True">     165:</span>     <span class="m">int</span> <span class="b">little_endian</span><span class="f">,</span> <span class="m">int</span> <span class="b">is_signed</span><span class="f">)</span><span class="f">;</span>
<a name="166" /><span class="True">     166:</span> 
<a name="167" /><span class="True">     167:</span> <span class="k">/* _PyLong_FromNbInt: Convert the given object to a PyLongObject</span>
<a name="168" /><span class="True">     168:</span> <span class="k">   using the nb_int slot, if available.  Raise TypeError if either the</span>
<a name="169" /><span class="True">     169:</span> <span class="k">   nb_int slot is not available or the result of the call to nb_int</span>
<a name="170" /><span class="True">     170:</span> <span class="k">   returns something not of type int.</span>
<a name="171" /><span class="True">     171:</span> <span class="k">*/</span>
<a name="172" /><span class="True">     172:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyLongObject</span> <span class="f">*</span><span class="f">)</span><span class="b">_PyLong_FromNbInt</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="173" /><span class="True">     173:</span> 
<a name="174" /><span class="True">     174:</span> <span class="k">/* _PyLong_Format: Convert the long to a string object with given base,</span>
<a name="175" /><span class="True">     175:</span> <span class="k">   appending a base prefix of 0[box] if base is 2, 8 or 16. */</span>
<a name="176" /><span class="True">     176:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">_PyLong_Format</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">obj</span><span class="f">,</span> <span class="m">int</span> <span class="b">base</span><span class="f">)</span><span class="f">;</span>
<a name="177" /><span class="True">     177:</span> 
<a name="178" /><span class="True">     178:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyLong_FormatWriter</span><span class="f">(</span>
<a name="179" /><span class="True">     179:</span>     <span class="b">_PyUnicodeWriter</span> <span class="f">*</span><span class="b">writer</span><span class="f">,</span>
<a name="180" /><span class="True">     180:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">obj</span><span class="f">,</span>
<a name="181" /><span class="True">     181:</span>     <span class="m">int</span> <span class="b">base</span><span class="f">,</span>
<a name="182" /><span class="True">     182:</span>     <span class="m">int</span> <span class="b">alternate</span><span class="f">)</span><span class="f">;</span>
<a name="183" /><span class="True">     183:</span> 
<a name="184" /><span class="True">     184:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">char</span><span class="f">*</span><span class="f">)</span> <span class="b">_PyLong_FormatBytesWriter</span><span class="f">(</span>
<a name="185" /><span class="True">     185:</span>     <span class="b">_PyBytesWriter</span> <span class="f">*</span><span class="b">writer</span><span class="f">,</span>
<a name="186" /><span class="True">     186:</span>     <span class="m">char</span> <span class="f">*</span><span class="b">str</span><span class="f">,</span>
<a name="187" /><span class="True">     187:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">obj</span><span class="f">,</span>
<a name="188" /><span class="True">     188:</span>     <span class="m">int</span> <span class="b">base</span><span class="f">,</span>
<a name="189" /><span class="True">     189:</span>     <span class="m">int</span> <span class="b">alternate</span><span class="f">)</span><span class="f">;</span>
<a name="190" /><span class="True">     190:</span> 
<a name="191" /><span class="True">     191:</span> <span class="k">/* Format the object based on the format_spec, as defined in PEP 3101</span>
<a name="192" /><span class="True">     192:</span> <span class="k">   (Advanced String Formatting). */</span>
<a name="193" /><span class="True">     193:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyLong_FormatAdvancedWriter</span><span class="f">(</span>
<a name="194" /><span class="True">     194:</span>     <span class="b">_PyUnicodeWriter</span> <span class="f">*</span><span class="b">writer</span><span class="f">,</span>
<a name="195" /><span class="True">     195:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">obj</span><span class="f">,</span>
<a name="196" /><span class="True">     196:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">format_spec</span><span class="f">,</span>
<a name="197" /><span class="True">     197:</span>     <span class="b">Py_ssize_t</span> <span class="b">start</span><span class="f">,</span>
<a name="198" /><span class="True">     198:</span>     <span class="b">Py_ssize_t</span> <span class="b">end</span><span class="f">)</span><span class="f">;</span>
<a name="199" /><span class="True">     199:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* Py_LIMITED_API */</span>
<a name="200" /><span class="True">     200:</span> 
<a name="201" /><span class="True">     201:</span> <span class="k">/* These aren&apos;t really part of the int object, but they&apos;re handy. The</span>
<a name="202" /><span class="True">     202:</span> <span class="k">   functions are in Python/mystrtoul.c.</span>
<a name="203" /><span class="True">     203:</span> <span class="k"> */</span>
<a name="204" /><span class="True">     204:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span> <span class="b">PyOS_strtoul</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span> <span class="m">char</span> <span class="f">*</span><span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="205" /><span class="True">     205:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">long</span><span class="f">)</span> <span class="b">PyOS_strtol</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span> <span class="m">char</span> <span class="f">*</span><span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">)</span><span class="f">;</span>
<a name="206" /><span class="True">     206:</span> 
<a name="207" /><span class="True">     207:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="208" /><span class="True">     208:</span> <span class="k">/* For use by the gcd function in mathmodule.c */</span>
<a name="209" /><span class="True">     209:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">_PyLong_GCD</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="210" /><span class="True">     210:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !Py_LIMITED_API */</span>
<a name="211" /><span class="True">     211:</span> 
<a name="212" /><span class="False">     212:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">__cplusplus</span>
<a name="213" /><span class="False">     213:</span> <span class="f">}</span>
<a name="214" /><span class="True">     214:</span> <span class="f">#</span><span class="n">endif</span>
<a name="215" /><span class="True">     215:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !Py_LONGOBJECT_H */</span>
<a name="216" /><span class="True">     216:</span> </pre>
  </body>
</html>
